#include <iostream>
using namespace std;

inline int max(const int &a,const int &b){
	return a>b ? a:b;
}
inline int min(const int &a,const int &b){
	return a<b ? a:b;
}
int cut(int w,int h,int m){
	if( m==1 ) return w*h;
	int min_1 = w*h, min_2 = w*h; 
	for(int i=1; i<w; i++)
		for(int k=1; k<m; k++ )
			min_1 = min(min_1,max(cut(i,h,k),cut(w-i,h,m-k)));
	for(int i=1; i<h; i++)
		for(int k=1; k<m; k++)
			min_2 = min(min_2,max(cut(w,i,k),cut(w,h-i,m-k)));
	return min(min_1,min_2);
}
int main(){
	freopen("in.txt","r",stdin);
	int w,h,m;
	while( true ){
		cin >> w >> h >> m;
		if( w==0 && h==0 && m==0 ) break;
		cout << cut(w,h,m) << endl;
	}
	return 0;
}
